SUMMARY:
This checks the same exact byte of data again, and checks for whatever changed and keeps that change as a bit.
An example of how it works:
old value
0042dac4 0000005b
current value
0042dac4 000000c3

1.  It ANDs them, to find what is still set so you know what didn't change even though you changed your bit.
5b AND c3 = 01011011 AND 11000011 = 010000011 = 43

2.  It subtracts that from the old value to get the bit.
5b - 43 = 01011011 - 01000011 = 00011000 = 18

Answer:  18 is your bit.

It also removes values that didn't change, since they can't possibly be what you are looking for because you changed something.


NOTE:
Make sure the bit you want to scan for is turned off, or different from whatever it was when you did the first scan, otherwise you will delete what you are looking for.


200ffc28 8ded0000 lw t5, $0000(t7)            Load a stored result's address.
200ffc2c 100d0065 beq zero, t5, $000ffecc     If the address is 0, then it is done scanning the results.
200ffc30 91eb0004 lbu t3, $0004(t7)           Load the old bits.  This actually needs to be unsigned, it's in a subtraction operation.
200ffc34 91ac0000 lbu t4, $0000(t5)           Load the current bits.  It doesn't matter if this is unsigned or not, it is only in an AND operation.
200ffc38 516c0068 beql t3, t4, $000ffee4      If the bits are exactly the same, then remove the result.

200ffc40 100afff9 beq zero, t2, $000ffd30     This is here to check if a result was removed.  If a result was removed, then t2 should be 0 since that was the last written address value, and this will cause it to check the next result which shifted down 1 result.  If no result was deleted, the address won't be 0 and the new value for the address will be saved.
200ffc44 016c5024 and t2, t3, t4              This checks which bits the old bits and current bits have in common, and sets them in "t2".
200ffc48 016a6023 subu t4, t3, t2             This subtracts what both the old and current bits have in common from the old bits.  "t4" is now the bits that changed.  It needs to be unsigned, or it will subtract incorrectly.
200ffc4c a1ec0004 sb t4, $0004(t7)            Stores the bits.
200ffc50 1000fff5 beq zero, zero, $000ffd30   Go back up and check the next result.
200ffc54 25ef0008 addiu t7, t7, $0008         Add 8 to where the results are stored so it can store another result.